/*
  This file is part of Open-Doors.

  Open-Doors is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.
  
  Open-Doors is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
  
  You should have received a copy of the GNU General Public License
  along with Open-Doors.  If not, see <http://www.gnu.org/licenses/>.

  Authors: Rune Thorbek & Araz B. Makoo
*/ 


var gruppe_win;

function get_form_contextmenu(grid_name) {
    return new Ext.menu.Menu({
	items: [{ 
	    text: 'Fjern',
	    icon: 'app/view/delete_row.gif',
	    handler: function() {
		var selection = Ext.getCmp(grid_name).getSelectionModel().getSelection();
		if (selection.length > 0) {
		    Ext.Msg.confirm('Spørgsmål', 'Er du sikker på, at du vil fjerne rækken?', function(btn, text){
			if (btn == 'yes'){
			    Ext.getCmp(grid_name).getStore().remove(selection);
			    
			    if (grid_name == "form_gruppe_indsamlerne") {
				Ext.getCmp('form_gruppe_changed').setValue("changed");
			    }
			    return;
			}
		    });
		}
	    }
	}]
    });
}


var wish_email_combo_store = new Ext.data.Store({
    
    fields: ['abbr', 'name'],
    data : [
	{"abbr": 1, "name":"Ja"},
        {"abbr": 0, "name":"Nej"}
      
    ]
});


function renderTip(val, meta, rec, rowIndex, colIndex, store) {
    meta.tdAttr = 'data-qtip="' + val.replace(new RegExp('\ ', 'g'), "&nbsp") + '"';
    return val;
}


function email_wish_render(val, meta, rec, rowIndex, colIndex, store) {
    var email_wish = rec.data.email_wish;
    
    if (email_wish == 1) {
	return renderTip("Ja", meta, rec, rowIndex, colIndex, store);
    } else {
	return renderTip("Nej", meta, rec, rowIndex, colIndex, store);
    }
}

function add_indsamler_to_group() {
    var uid =  Ext.getCmp('form_gruppe_indsamler').getValue();
    
    if  ( uid == null) {
	return;
    }
    
    var index = Ext.getCmp('form_gruppe_indsamler').getStore().find("uid", uid);
    var record = Ext.getCmp('form_gruppe_indsamler').getStore().getAt(index);
    
    if (record.get('no_collection_boxes') != '0') {
	Ext.MessageBox.alert("Fejl", "Du kan ikke vælge indsamleren, da denne allerede er tilknyttet en " +
			    "indsamlingsgruppe, hvor der er udleveret indsamlingsbøsser.")
	Ext.getCmp('form_gruppe_indsamler').clearValue();
	return;
    }

    record.set('group_uid', Ext.getCmp('form_gruppe_uid').getValue());
    record.set('group_name', Ext.getCmp('form_gruppe_name').getValue());
    Ext.getCmp('form_gruppe_indsamlerne').getStore().insert(0, record);
    Ext.getCmp('form_gruppe_indsamler').clearValue();
    Ext.getCmp('form_gruppe_changed').setValue("changed");
}

function calculate_total() {
    var coins = Ext.getCmp('form_gruppe_amount_coins').getValue().replace(",",".");
    var bank_notes = Ext.getCmp('form_gruppe_amount_bank_notes').getValue().replace(",",".");
    var app = Ext.getCmp('form_gruppe_amount_app').getValue().replace(",",".");

    if (!isNaN(bank_notes) && !isNaN(coins) && !isNaN(app)) {
	coins = (coins == "") ? 0 : coins;
	bank_notes = (bank_notes == "") ? 0 : bank_notes;
	app = (app == "") ? 0 : app;
	var total = + parseFloat(coins) + parseFloat(bank_notes) + parseFloat(app);
	if (total != 0) {
	    total = (""+total).replace(".",",")
	}
	Ext.getCmp("form_gruppe_amount_total").setValue(total);
    } else {
	Ext.getCmp("form_gruppe_amount_total").setValue("Fejl");
    }
    

    
}

function add_rute_to_group() {
    var uid =  Ext.getCmp('form_gruppe_rute').getValue();
    
    if  ( uid == null) {
	return;
    }
    
    var index = Ext.getCmp('form_gruppe_rute').getStore().find("uid", uid);
    var record = Ext.getCmp('form_gruppe_rute').getStore().getAt(index);
    console.log(record.get('group_uid'));
    if (record.get('group_uid') != '' && record.get('group_uid') != "null") {
	Ext.MessageBox.alert("Fejl", "Ruten er optaget. Vælg en anden rute.")
	Ext.getCmp('form_gruppe_rute').clearValue();
	return;
    }
    
    record.set('group_uid', Ext.getCmp('form_gruppe_uid').getValue());
    record.set('group_name', Ext.getCmp('form_gruppe_name').getValue());
    Ext.getCmp('form_gruppe_ruterne').getStore().insert(0, record);
    Ext.getCmp('form_gruppe_rute').clearValue();
}

function showGruppeForm(title, edit, data) {
    if (!gruppe_win) {
        var form = Ext.widget('form', {
            layout: {
                type: 'hbox',
                align: 'stretch'
            },
            border: false,
            bodyPadding: 10,
	    
            fieldDefaults: {
                labelAlign: 'top',
                labelWidth: 200,
                labelStyle: 'font-weight:bold',
		labelSeparator: "" 
            },
                defaults: {
                    margins: '0 0 0 0'
                },
	    
            items: [ {	
		xtype: 'panel',

		defaults: {
                    margins: '0 0 0 0',
		    width: 300
                },
		layout: 'vbox',
                		
		border: false,
		items: [{
                    xtype: 'textfield',
		    id: 'form_gruppe_changed',
                    fieldLabel: 'indsamlereliste changed',
		    hidden: true
		}, {
                    xtype: 'textfield',
		    id: 'form_gruppe_edit',
                    fieldLabel: 'edit',
		    hidden: true
		},{
                    xtype: 'textfield',
		    id: 'form_gruppe_uid',
                    fieldLabel: 'uid',
		    hidden: true
		},{
                    xtype: 'textfield',
		    id: 'form_gruppe_venue_name',
                    fieldLabel: 'Mødested',
		    disabled: true
		},{
                    xtype: 'textfield',
		    id: 'form_gruppe_name',
                    fieldLabel: 'Gruppenavn',
		    disabled: true
		}, {
		    xtype: 'textfield',
		    id: 'form_gruppe_no_collection_boxes',
                    fieldLabel: '# indsamlingsbøsser udleveret',
		    fieldStyle: 'text-align: right;',
		    labelAlign: 'left',
		    margins: '3 0 0 0',
		    validator: function (val){
			if (val.indexOf('-')  != -1) {
			    return false;
			}
			return true;
		    }
		}, {
                    xtype: 'textfield',
		    id: 'form_gruppe_returned_collection_boxes',
                    fieldLabel: '# indsamlingsbøsser returneret',
		    fieldStyle: 'text-align: right;',
		    labelAlign: 'left',
		    margin: "30 0 15 0",
		    validator: function (val){
			if (val.indexOf('-')  != -1) {
			    return false;
			}
			return true;
		    }
		}, {
                    xtype: 'textfield',
		    id: 'form_gruppe_amount_coins',
                    fieldLabel: 'Beløb i mønter (standard)',
		    fieldStyle: 'text-align: right;',
		    labelAlign: 'left',
		    enableKeyEvents: true,
		    listeners:{  
			keyup: {
			    element: 'el',
			    fn: function(){
				calculate_total();
			    }
			}
		    },
		    validator: function (val){
			if (val.indexOf('-')  != -1) {
			    return false;
			}
			return true;
		    }
		}, {
                    xtype: 'textfield',
		    id: 'form_gruppe_amount_bank_notes',
                    fieldLabel: 'Beløb i sedler',
		    fieldStyle: 'text-align: right;',
		    labelAlign: 'left',
		    enableKeyEvents: true,
		    listeners:{  
			keyup: {
			    element: 'el', 
			    fn: function(){
				calculate_total();
			    }
			}
		    },
		    validator: function (val){
			if (val.indexOf('-')  != -1) {
			    return false;
			}
			return true;
		    }
		    
		}, {
                    xtype: 'textfield',
		    id: 'form_gruppe_amount_app',
                    fieldLabel: 'Beløb fra app',
		    fieldStyle: 'text-align: right;',
		    labelAlign: 'left',
		    enableKeyEvents: true,
		    listeners:{  
			keyup: {
			    element: 'el',
			    fn: function(){
				calculate_total();
			    }
			}
		    },
		    validator: function (val){
			if (val.indexOf('-') != -1) {
			    return false;
			}
			return true;
		    }
		}, {
                    xtype: 'textfield',
		    id: 'form_gruppe_amount_total',
                    fieldLabel: 'Beløb totalt',
		    fieldStyle: 'text-align: right;',
		    disabled: true,
		    labelAlign: 'left'
		}, {
		    xtype: 'fieldcontainer',
		    id: 'form_gruppe_email_wish',
                    fieldLabel: 'E-mail med beløb ønskes',
		    defaultType: 'radiofield',
		    defaults: {
			width: 60
		    },
		    layout: 'hbox',
		    items: [
			{
			    boxLabel  : 'Ja',
			    name      : 'email',
			    inputValue: '1',
			    id        : 'form_gruppe_email_wish_ja'
			}, {
			    boxLabel  : 'Nej',
			    name      : 'email',
			    inputValue: '0',
			    id        : 'form_gruppe_email_wish_nej'
			}]
		}, {
		    xtype: 'fieldcontainer',
		    id: 'form_gruppe_same_route',
                    fieldLabel: 'Samme rute ønskes næste år',
		    defaultType: 'radiofield',
		    defaults: {
			width: 60
		    },
		    layout: 'hbox',
		    items: [
			{
			    boxLabel  : 'Ja',
			    name      : 'same_route',
			    inputValue: '1',
			    id        : 'form_gruppe_same_route_ja'
			}, {
			    boxLabel  : 'Nej',
			    name      : 'same_route',
			    inputValue: '0',
			    id        : 'form_gruppe_same_route_nej'
			}]
		}, {
                    xtype: 'textareafield',
		    id: 'form_gruppe_comment',
                    fieldLabel: 'Kommentar',
                    labelAlign: 'top',
                    flex: 1,
                    margins: '0',
		}]
	    }, {	
		xtype: 'panel',
		
		defaults: {
                    margins: '0 0 20 20',
		    width: 300
                },
		layout: 'vbox',
                
		border: false,
		items: [{
		    xtype: 'container',
		    width: 550,
		    layout: 'hbox',
		    border: false,
		    items: [{
			xtype: 'combobox',
			id: 'form_gruppe_indsamler',
			fieldLabel: 'Indsamler',
			displayField: 'display_grid',
			valueField: 'uid',
			width: 370,
			labelWidth: 130,
			store: 'IndsamlereCombobox',
			queryParam: 'search_value',
			queryMode: 'remote',
			queryDelay: 20,
			minChars: 0,
			triggerAction: 'query',
			listeners:{  
			    scope:this,  
			    specialkey: function(f,e) {  
				if(e.getKey()==e.ENTER) {  
				    add_indsamler_to_group();
				}  
			    }  
			}
		    }, {
			xtype: 'button',
			width: 100,
			text: 'Tilføj',
			handler: function() {
			    add_indsamler_to_group();
			},
			margin: "18 0 0 10"
		    }]
		}, {
		    xtype: 'grid',
		    columnLines: true,
		    hideHeaders: false,
		    id: 'form_gruppe_indsamlerne',
		    title: 'Indsamlere i gruppen',
		    store: 'GruppensIndsamlere',
		    columns: [
			{text: 'Navn', dataIndex: 'display_grid', flex: 1, renderer: renderTip},
			{text: 'Kampagne', dataIndex: 'campaign_name', flex: 1, renderer: renderTip},
			{text: 'Mødested', dataIndex: 'venue_name', flex: 1, renderer: renderTip}
		    ],
		    listeners: {
			beforeitemcontextmenu: function(view, record, item, index, e)
			{
			    e.stopEvent();
			    get_form_contextmenu("form_gruppe_indsamlerne").showAt(e.getXY());
			}
		    },
		    height: 120,
		    width: 480,
		}, {
		    xtype: 'container',
		    width: 550,
		    layout: 'hbox',
		    border: false,
		    items: [{
			xtype: 'combobox',
			id: 'form_gruppe_rute',
			fieldLabel: 'Rute',
			displayField: 'display',
			valueField: 'uid',
			width: 370,
			labelWidth: 130,
			store: 'RuterCombobox',
			queryParam: 'search_value',
			queryMode: 'remote',
			queryDelay: 20,
			minChars: 0,
			triggerAction: 'query',
			listeners:{  
			    scope:this,  
			    specialkey: function(f,e) {  
				if(e.getKey()==e.ENTER) {  
				    add_rute_to_group();
				}  
			    }  
			}
		    }, {
			xtype: 'button',
			width: 100,
			text: 'Tilføj',
			handler: function() {
			    add_rute_to_group();
			},
			margin: "18 0 0 10"
		    }]
		}, {
		    xtype: 'grid',
		    columnLines: true,
		    hideHeaders: false,
		    id: 'form_gruppe_ruterne',
		    title: 'Ruter tildelt gruppen',
		    store: 'GruppensRuter',
		    columns: [
			{ text: 'Rute', dataIndex: 'route_number', flex: 1, renderer: renderTip},
			{text: 'Mødested', dataIndex: 'venue_name', flex: 1, renderer: renderTip}
			
			
		    ],
		    listeners: {
			beforeitemcontextmenu: function(view, record, item, index, e)
			{
			    e.stopEvent();
			    get_form_contextmenu("form_gruppe_ruterne").showAt(e.getXY());
			}
		    },
		    height: 120,
		    width: 480,
		}]
	    }],
	
            buttons: [{
                text: 'Ok',
                handler: function() {
		    check_warnings_and_commit_gruppe(this.up('form').getForm(), this.up('window'), null, null);
                }
            }, {
                text: 'Annuller',
                handler: function() {
                    this.up('form').getForm().reset();
                    this.up('window').hide();
                }
            }]
        });
	
        gruppe_win = Ext.widget('window', {
            title: title,
            closeAction: 'hide',
            width: 850,
            height: 550,
            minHeight: 400,
            layout: 'fit',
            resizable: false,
            modal: true,
            items: form
        });
    }

    gruppe_win.down('form').getForm().reset();
    Ext.StoreMgr.lookup("GruppensIndsamlere").clearFilter(true);
    Ext.StoreMgr.lookup("GruppensIndsamlere").removeAll(false);
    Ext.StoreMgr.lookup("GruppensRuter").clearFilter(true);
    Ext.StoreMgr.lookup("GruppensRuter").removeAll(false);
    if (edit) {

	Ext.StoreMgr.lookup("GruppensIndsamlere").remoteFilter = false;
	Ext.StoreMgr.lookup("GruppensIndsamlere").filter([{property: "group_uid", value: data.get('uid')}]);
	Ext.StoreMgr.lookup("GruppensIndsamlere").remoteFilter = true;
	Ext.StoreMgr.lookup("GruppensIndsamlere").load({
	    callback: function() {
		Ext.StoreMgr.lookup("GruppensRuter").filter([{property: "group_uid", value: data.get('uid')}]);
	    }
	});

				
	Ext.getCmp('form_gruppe_edit').setValue(edit);
	Ext.getCmp('form_gruppe_uid').setValue(data.get('uid'));
	Ext.getCmp('form_gruppe_venue_name').setValue(data.get('venue_name'));
	Ext.getCmp('form_gruppe_name').setValue(data.get('name'));
	Ext.getCmp('form_gruppe_no_collection_boxes').setValue(data.get('no_collection_boxes'));
	Ext.getCmp('form_gruppe_returned_collection_boxes').setValue(data.get('returned_collection_boxes'));
	if (data.get('email_wish') == 1) {
	    Ext.getCmp('form_gruppe_email_wish_ja').setValue(1);
	} else {
	    Ext.getCmp('form_gruppe_email_wish_nej').setValue(0);
	}
	if (data.get('same_route') == 1) {
	    Ext.getCmp('form_gruppe_same_route_ja').setValue(1);
	} else {
	    Ext.getCmp('form_gruppe_same_route_nej').setValue(0);
	}
	//Ext.getCmp('form_gruppe_email_wish').setValue(data.get('email_wish'));
	Ext.getCmp('form_gruppe_comment').setValue(data.get('comment'));
	Ext.getCmp('form_gruppe_amount_bank_notes').setValue(data.get('amount_bank_notes').replace(".",","));
	Ext.getCmp('form_gruppe_amount_coins').setValue(data.get('amount_coins').replace(".",","));
	Ext.getCmp('form_gruppe_amount_app').setValue(data.get('amount_app').replace(".",","));
	calculate_total()
    }

    gruppe_win.setTitle(title);
    gruppe_win.show();
}

function checkNonZeroAmountNoRoutes() {
    var total = Ext.getCmp('form_gruppe_amount_total').getValue().replace(",",".");
    var no_routes = Ext.StoreMgr.lookup("GruppensRuter").count()
    
    if  (!isNaN(total) && total > 0 && no_routes < 1) {
	return 'Du har indtastet et beløb, men har ikke valgt en rute. ' +   
	    'Beløbet vil derfor ikke blive talt sammen med det samlede beløb for ' + 
	    'mødestedet.<br /><br />'


    }
    return '';
}

function checkNonZeroCollectionBoxesNoRoutes() {
    var no_collection_boxes = Ext.getCmp('form_gruppe_no_collection_boxes').getValue();
    var no_routes = Ext.StoreMgr.lookup("GruppensRuter").count()
    
    if  (!isNaN(no_collection_boxes) && no_collection_boxes > 0 && no_routes < 1) {
	return "Der er udleveret en eller flere indsamlingsbøsser, " +
	    "men ingen ruter at tilknyttet gruppen<br /><br />."

	
    }
    return '';
}

function checkIndsamlerFromDifferentDistricts() {
    indsamlere_value = "";
    var result = ""
    Ext.StoreMgr.lookup("GruppensIndsamlere").each(function(rec) {
	if (indsamlere_value == "") {
	    indsamlere_value = rec.get('venue_name');
	} else {
	    if (indsamlere_value != rec.get('venue_name')) {
		// The string &nbsp&nbsp&nbsp is inserted because of a bug in message dialog or else wrapping will be wrong
		result =  "Gruppens indsamlere er tilmeldt forskellige mødesteder, " +
		    "dette skal rettes.&nbsp&nbsp&nbsp<br /><br />"
	    }
	}
    });

    return result;
}

function checkRuterFromDifferentDistricts() {
    rute_value = "";
    var result = ""
    Ext.StoreMgr.lookup("GruppensRuter").each(function(rec) {
	if (rute_value == "") {
	    rute_value = rec.get('venue_name');
	} else {
	    if (rute_value != rec.get('venue_name')) {
		result =  "Der er valgt ruter fra forskellige mødesteder. " +
		    "Dette kan resultere i en misvisende sammentælling for mødestederne.<br /><br />"
	    }
	    
	}
    });

    return result;
}

function checkCollectionBoxesReturnedAmountZero() {
    var returned_collection_boxes = Ext.getCmp('form_gruppe_returned_collection_boxes').getValue();
    var total = Ext.getCmp('form_gruppe_amount_total').getValue().replace(",",".");
    
    if  (!isNaN(returned_collection_boxes) && !isNaN(total) && returned_collection_boxes > 0 && total == 0) {
	// The string &nbsp&nbsp&nbsp is inserted because of a bug in message dialog or else wrapping will be wrong
	return "Gruppens indsamlingsbøsser er returneret, men beløbet er nul.&nbsp&nbsp&nbsp<br /><br />"
    }
    return '';
}

function checkNumOfReturnedCollectionBoxes() {
    var no_collection_boxes = Ext.getCmp('form_gruppe_no_collection_boxes').getValue();
    var returned_collection_boxes = Ext.getCmp('form_gruppe_returned_collection_boxes').getValue();
    
    if  (!isNaN(no_collection_boxes) && !isNaN(returned_collection_boxes) && returned_collection_boxes > no_collection_boxes) {
	return "Der er registreret flere returnerede indsamlingsbøsser end udleverede.<br /><br />"
    }
    return '';
}



function check_warnings_and_commit_gruppe(form, window, indsamler, venue) {
    if (form.isValid()) {
	var warnings = checkNonZeroAmountNoRoutes();
	warnings += checkNonZeroCollectionBoxesNoRoutes();
	warnings += checkIndsamlerFromDifferentDistricts();
	warnings += checkRuterFromDifferentDistricts();
	warnings += checkCollectionBoxesReturnedAmountZero();
	warnings += checkNumOfReturnedCollectionBoxes();
	
	console.log(warnings);
	
	if (warnings.length > 0) {
	    warnings += 'Er du sikker på at du vil lukke vinduet?';
	    
	    Ext.Msg.confirm('Advarsel', warnings, function(btn, text){
		if (btn == 'yes'){
		    
		    if (!commit_gruppe()) return;

		    if (indsamler != null) {
			showIndsamlerForm('Rediger indsamler', true, indsamler);
		    }

		    if (venue != null) {
			showRuteForm('Rediger rute', true, venue);
		    }
		    
		    form.reset();
		    window.hide();
		}
	    });
	} else {
	    if (!commit_gruppe()) return;
	    
	    if (indsamler != null) {
		showIndsamlerForm('Rediger indsamler', true, indsamler);
	    }
	    
	    if (venue != null) {
		showRuteForm('Rediger rute', true, venue);
	    }

	    form.reset();
	    window.hide();
	}
    }
}

function commit_gruppe() {
    
    indsamlere_value = "";
    Ext.StoreMgr.lookup("GruppensIndsamlere").each(function(rec) {
        indsamlere_value += rec.get('uid') + ", ";
    });

    ruter_value = "";
    Ext.StoreMgr.lookup("GruppensRuter").each(function(rec) {
        ruter_value += rec.get('uid') + ", ";
    });
    
    
    var changed_value = Ext.getCmp('form_gruppe_changed').getValue();
    var edit_value = Ext.getCmp('form_gruppe_edit').getValue();
    var uid_value = Ext.getCmp('form_gruppe_uid').getValue();
    var no_collection_boxes_value = Ext.getCmp('form_gruppe_no_collection_boxes').getValue();
    var returned_collection_boxes_value = Ext.getCmp('form_gruppe_returned_collection_boxes').getValue();
    var email_wish_value = Ext.getCmp('form_gruppe_email_wish_ja').getValue();
    var same_route_value = Ext.getCmp('form_gruppe_same_route_ja').getValue();
    var comment_value = Ext.getCmp('form_gruppe_comment').getValue();
    var amount_bank_notes_value = Ext.getCmp('form_gruppe_amount_bank_notes').getValue().replace(",",".");
    var amount_coins_value = Ext.getCmp('form_gruppe_amount_coins').getValue().replace(",",".");
    var amount_app_value = Ext.getCmp('form_gruppe_amount_app').getValue().replace(",",".");

    if (isNaN(no_collection_boxes_value) || isNaN(returned_collection_boxes_value) ||
	isNaN(amount_bank_notes_value) || isNaN(amount_coins_value) || isNaN(amount_app_value)) {
	Ext.Msg.alert('Valideringsfejl', 'Et eller flere af felterne er fyldt forkert.');
	return false;
    }

    Ext.Ajax.request({
	url: 'db_functions.php',
	method: 'post',
	params: {
	    function  : 'commit_group',
	    edit: edit_value,
	    uid: uid_value,
	    no_collection_boxes: no_collection_boxes_value,
	    returned_collection_boxes: returned_collection_boxes_value,
	    email_wish: email_wish_value,
	    same_route: same_route_value,
	    comment: comment_value,
	    indsamlere: indsamlere_value,
	    ruter: ruter_value,
	    amount_bank_notes: amount_bank_notes_value,
	    amount_coins: amount_coins_value,
	    amount_app: amount_app_value,
	},
	success: function(response, object) {
	    var res = Ext.decode(response.responseText);
	 
            if (res.success == false){
		Ext.MessageBox.alert("Fejl", res.msg);
	    } else {
		var selection = Ext.getCmp("grupper_grid").getSelectionModel().getSelection();
		
		if (selection.length != 0) {
		    
		    if (changed_value == "changed") {
			search("grupper");
		    } else {
			selection[0].data = res.results[0]
			var index = Ext.getCmp("grupper_grid").getStore().indexOf(selection[0]);
			

			Ext.getCmp("grupper_grid").getView().refreshNode(index);
		    } 
 		}

		//Ext.MessageBox.alert("Info", res.msg);
	    }
	    if (edit_value == null || edit_value == '') {
		search("grupper");
	    }
	    search("indsamlere");
	    search("ruter");
	}
    });
    
    return true;
}

function edit_gruppe(data) {
    showGruppeForm('Rediger gruppe', true, data);
}

var contextmenu_grupper = new Ext.menu.Menu({
    items: [
	{ 
	    text: 'Rediger',
	    icon: 'app/view/edit_row.gif',
	    handler: function() {
		var selection = Ext.getCmp("grupper_grid").getSelectionModel().getSelection();
		if (selection.length > 0) {
		    edit_gruppe(selection[0]);
		}
	    }
	}/*, { 
	    text: 'Slet',
	    icon: 'app/view/delete_row.gif',
	    handler: function() {
		var selection = Ext.getCmp("grupper_grid").getSelectionModel().getSelection();
		if (selection.length > 0) {
		    Ext.Msg.confirm('Spørgsmål', 'Er du sikker på, at du vil slette rækken?', function(btn, text){
			if (btn == 'yes'){
			    delete_row("grupper", "delete_group", selection[0].get('uid'));
			    return;
			}
		    });
		}
	    }
	}*/
    ]
});


Ext.define('OpenDoors.view.GrupperView', {
    extend: 'Ext.panel.Panel',
    alias: 'widget.gruppeview',

    hideHeaders: true,
    

    items: [{
	xtype: 'component',
	html: '<font size="5">Indsamlingsgrupper</font>',
 	margin: "30 0 0 30"
	
    }, {
	xtype: 'combobox',
	id: 'choose_venue_grupper_combobox',
	width: 250,
	margin: "50 0 0 30",
	displayField: 'name',
	valueField: 'uid',
	fieldLabel: "Vælg mødested",
	labelWidth: 100,
	store: 'ChooseVenueCombobox',
	emptyText: "Alle",
	listeners:{  
	    scope:this,  
	    select: function(f,e) {  
		search("grupper");
	    }  
	}
    }, {
	xtype: 'container',
	width: 600,
	layout: 'hbox',
	border: false,
	items: [{
	    xtype: 'textfield',
	    id: 'search_grupper_field',
	    width: 300,
	    margin: "20 0 0 30",
	    listeners:{  
		scope:this,  
		specialkey: function(f,e) {  
		    if(e.getKey()==e.ENTER) {  
			search("grupper");
		    }  
		}  
	    }
	}, {
	    xtype: 'button',
	    width: 100,
	    text: 'Søg/Opdater',
	    id: 'search_grupper_button',
	    margin: "20 0 0 10"
	}]
    }, {
	xtype: 'grid',
	columnLines: true,
	id: 'grupper_grid',
	margin: "30 15 30 15",
	store: 'Grupper',
	verticalScroller: {
	    xtype: 'paginggridscroller'
	},
	listeners: {
	    beforeitemcontextmenu: function(view, record, item, index, e) {
		e.stopEvent();
		contextmenu_grupper.showAt(e.getXY());
	    }
	},
	
	columns: [{
	    xtype: 'rownumberer',
	    sortable: false,
	    width: 50
	}, {
	    text: 'Gruppenavn',
	    dataIndex: 'name',
	    flex: 1,
	    renderer: renderTip
	}, {
	    text: '# indsamlingsbøsser udleveret',
	    dataIndex: 'no_collection_boxes',
	    align:'right', 
	    style: 'text-align:left',
	    flex: 1,
	    renderer: renderTip
	}, {
	    text: '# indsamlingsbøsser returneret',
	    dataIndex: 'returned_collection_boxes',
	    align:'right', 
	    style: 'text-align:left',
	    flex: 1,
	    renderer: renderTip
	}, {
	    text: 'Beløb totalt',
	    dataIndex: 'total',
	    align:'right', 
	    style: 'text-align:left',
	    width: 100,
	    renderer: renderTip
	}, {
	    text: 'Antal personer',
	    dataIndex: 'no_members',
	    align:'right', 
	    style: 'text-align:left',
	    width: 90,
	    renderer: renderTip
	}, {
	    text: 'Mødested',
	    dataIndex: 'venue_name',
	    flex: 1,
	    renderer: renderTip
	}, {
	    text: 'Antal tildelte ruter',
	    dataIndex: 'no_routes',
	    align:'right', 
	    style: 'text-align:left',
	    width: 110,
	    renderer: renderTip
	}]
    }],

    initComponent: function() {
        
        this.callParent();
    }
});

